Les résultats du projet ont été très mitigés. En effet, l'équipe a rencontré plusieurs difficultés lors de l'implémentation du projet. Pour cette raison, il nous est impossible de présenter les résultats du projet avec un vidéo. Cependant, malgré l'intégration difficile des différentes parties, il a été possible d'avoir des résultats de la part de certains sous-systèmes séparément.

\subsection{Problèmes de compatibilité}

Les problèmes rencontrés lors du projet ont plusieurs causes. Le premier problème auquel l'éqipe a été confronté est dû à l'ADC. En effet, celui-ci avait des problèmes à s'initialiser correctement. Un solution à ce problème a été trouvé en démarrant les différents nœuds de ROS manuellement. Lorsque les nœuds sont démarrés manuellement, ceux-ci donnent plus d'information pour permettre de déverminer les applications et de savoir si l'ADC s'est initialisé correctement.

Le deuxième problème rencontré à trait à l'utilisation de la Kinect. En effet, l'interface ROS vérifiait que l'image rapportée par la Kinect était bien dans le format RGB. Dans le cas où cette image était en format BGR, l'image était tout simplement ignorée et rien n'était retourné vers MATLAB.

\subsection{Cartographie}

La cartographie est effectuée à l'aide de la Kinect ainsi que de l'algorithme ICP. Étant donné qu'il a été impossible d'utiliser la Kinect en même temps que le gyroscope, il n'a pas été possible d'utiliser le robot pour tester cet algorithme. La Kinect seule a donc été utilisée pour prendre des photos à 15 degrés d'intervalles. Celles-ci ont ensuite été utilisées pour simuler un robot tournant sur lui-même par intervalle de 15 degrés.

La figure~\ref{fig:carte} montre le nuage de point obtenu en superposant les images à l'aide de l'algorithme ICP. La commande utilisée en prétraitement est la rotation effectuée par la caméra avant de prendre la photo. Cette commande était mesurée avec une précision de quelques degrés seulement. En effet, sur le robot, la mesure de la rotation ne pouvant être effectuée avec une très grande précision, l'équipe préféré ne pas faire ces rotations avec une trop grande précision.

Ce nuage de point a été effectué avec des photos de la salle à manger d'un membre de l'équipe. L'ensemble de points en haut à gauche qui semble être du bruit est en fait une étagère. Par la suite, on peut voir que le coin du mur apparaît convenablement. Les points passé la moitié de la rotation deviennent de moins en moins précis.

\begin{figure}[h]
\includegraphics[width=3.2in]{carte.png} 
\caption{Carte obtenue à l'aide de la Kinect et d'ICP}
\label{fig:carte}
\end{figure}

Dans les faits, ce que ICP nous retourne est la transformation à effectuer pour pouvoir appliquer les points obtenus sur le modèle précédent. Dans ce cas-ci, le modèle précédent est la carte du monde obtenue jusqu'à maintenant. Les figures~\ref{fig:rotation} et~\ref{fig:pose} nous montrent l'estimation de la pose du robot par l'algorithme. Les points en rouges représentent la carte et les points en bleu représentent les positions estimées de la caméra. La figure~\ref{fig:rotation} montre la rotation qui a été effectuée pour prendre les photos ainsi que la rotation estimée par l'ICP. On peut voir que dans notre cas, ICP surestime la rotation. Cela a pour effet de crochir la carte obtenue et diminue sa précision vers la fin de la rotation.

\begin{figure}[h]
\includegraphics[width=3.2in]{carte2.png}
\caption{Rotation obtenue et théorique}
\label{fig:rotation}
\end{figure}

\begin{figure}[h]
\includegraphics[width=3.2in]{rotation.png}
\caption{Position du robot selon ICP}
\label{fig:pose}
\end{figure}


On peut voir sur la figure~\ref{fig:rotation} que la rotation par ICP est surestimée. Cela explique pourquoi les dernières rotations de la carte sont plus floues et l'effet incurvé de celle-ci.

